package com.bonshotels.DataLayer.CtrlDadesHibernate;

import com.bonshotels.DomainLayer.CtrlDades.FactoriaCtrlDades;
import com.bonshotels.DomainLayer.CtrlDades.ICtrlBonsHotels;
import com.bonshotels.DomainLayer.CtrlDades.ICtrlPoblacio;
import com.bonshotels.DomainLayer.CtrlDades.ICtrlHabitacio;
import com.bonshotels.DomainLayer.CtrlDades.ICtrlClient;
import com.bonshotels.DomainLayer.CtrlDades.ICtrlHotel;


/**
 * La classe FactoriaCtrlDades.
 * 
 * Aquesta classe implementa una Factoria de Control de Dades Concreta per al Data Mapper Hibernate. 
 * Es la encarregada de crear les instancies del controlador de dades de
 * cada un dels objectes que necesitem de la base de dades. Tots els controladors
 * de dades que retorna (Productes Concrets) compleixen una interficie
 * definida a la capa de domini (Productes Abstractes).
 * @author Marc Mauri Alloza
 */
public class FactoriaCtrlDadesHibernate extends FactoriaCtrlDades {
        
        /**
         * Ens retorna un objecte que implementa la interficie que ens permet obtenir
         * del Data Mapper Hibernate instancies de la classe Poblacio.
         *
         * @return Interficie CtrlPoblacio
         */
        public ICtrlPoblacio obteCtrlPoblacio() {
                return new CtrlPoblacioHibernate() ;       
        }
        
        /**
         * Ens retorna un objecte que implementa la interficie que ens permet obtenir
         * del Data Mapper Hibernate instancies de la classe Hotel.
         * 
         * @return Interficie CtrlHotel
         */
        public ICtrlHotel obteCtrlHotel(){
                return new CtrlHotelHibernate() ;  
        }
        
        /**
         * Ens retorna un objecte que implementa la interficie que ens permet obtenir
         * del Data Mapper Hibernate instancies de la classe Client.
         * 
         * @return Interficie CtrlClient
         */
        public ICtrlClient obteCtrlClient(){
                return new CtrlClientHibernate();  
        }
        
        /**
         * Ens retorna un objecte que implementa la interficie que ens permet obtenir
         * del Data Mapper Hibernate instancies de la classe Habitacio.
         * 
         * @return Interficie CtrlHabitacio
         */
        public ICtrlHabitacio obteCtrlHabitacio(){
                return new CtrlHabitacioHibernate() ;      
        }
        
        /**
         * Ens retorna un objecte que implementa la interficie que ens permet obtenir
         * del Data Mapper Hibernate instancies de la classe BonsHotels.
         * 
         * @return Interficie CtrlBonsHotels
         */
        public ICtrlBonsHotels obteCtrlBonsHotels(){
                return new CtrlBonsHotelsHibernate() ;     
        }
}